package com.dji.sdk.cloudapi.config;

/**
 * 配置请求类，用于设备向云平台请求配置信息。
 *
 * 该类在MQTT通信中充当请求体，用于License校验流程中：
 * 1. 设备连接到MQTT服务器后，会发送包含此对象的请求到云平台
 * 2. 请求通过topic: thing/product/{gateway_sn}/requests, method: config发送
 * 3. 云平台根据请求中的configType和configScope字段返回对应的配置信息
 * 4. 设备使用返回的配置信息(主要是appId、appKey和license)进行身份验证
 *
 * 该类是设备上云流程中的第一步，也是License校验的核心数据结构。
 * 如果License校验失败，设备将无法完成后续的组织绑定流程。
 *
 * @author sean
 * @version 1.3
 * @date 2022/11/10
 */
public class RequestsConfigRequest {

    /**
     * 配置类型
     * 指定请求的配置类型，云平台根据此字段返回不同类型的配置
     */
    private ConfigTypeEnum configType;

    /**
     * 配置范围
     * 指定请求的配置范围，如产品级别配置(PRODUCT)等
     * 云平台根据此字段判断使用哪个配置服务实现类提供配置信息
     */
    private ConfigScopeEnum configScope;

    public RequestsConfigRequest() {
    }

    @Override
    public String toString() {
        return "RequestsConfigRequest{" +
                "configType=" + configType +
                ", configScope=" + configScope +
                '}';
    }

    public ConfigTypeEnum getConfigType() {
        return configType;
    }

    public RequestsConfigRequest setConfigType(ConfigTypeEnum configType) {
        this.configType = configType;
        return this;
    }

    public ConfigScopeEnum getConfigScope() {
        return configScope;
    }

    public RequestsConfigRequest setConfigScope(ConfigScopeEnum configScope) {
        this.configScope = configScope;
        return this;
    }
}